<?php

namespace Controller;

class MyTopicAndPostsOutput
{
	public $topicHTML = "";
	public $postHTML = "";
}

class MyTopicsAndPostsController
{
	//Parametrar: Instanser av klasserna Database, TopicList, LoginHandler samt TopicView
	//Returnerar: Två HTML strängar via klassen TopicAndPostsOutput 
	public function DoControll(\Model\Database $db, \Model\TopicList $tl, \Model\LoginHandler $lh, \View\TopicView $tv)
	{
		//Instanser
		$pv = new \View\PostView();;
		$pl = new \Model\PostList($db);	
		
		//Om anv är inloggad hämtas & reurneras samtliga topics & posts tillhörande den användaren
		if($lh->IsLoggedIn() == TRUE)
		{
			$userId = $lh->GetUserIdBySession(); //Hämtar den inloggades användarId via funktion i LoginHandler		
			
			$myTopicsHTML = $tv->RenderHeader(\View\TopicView::MY_TOPICS_HEADER);
			$topics = $tl->GetTopicsByUserId($userId);
	
			$myPostsHTML = $pv->RenderHeader(\View\PostView::MY_POSTS_HEADER);
			$posts = $pl->GetPostsByUserId($userId);		
			
			if($topics->Count() == 0)
			{
				$myTopicsHTML .= $tv->RenderMessage(\View\TopicView::NO_TOPICS);
			}
			else
			{
				$myTopicsHTML .= $tv->RenderTopicList($topics);
			}
			
			if($posts->Count() == 0)
			{
				$myPostsHTML .= $pv->RenderMessage(\View\PostView::NO_POSTS);
			}
			else
			{
				$myPostsHTML .= $pv->RenderMyPostList($posts);
			}		
			
			//Skapar 2 output för att vara konsekvent, samt för att underlätta gränssnittsredigering
			$out = new MyTopicAndPostsOutput();
			$out->topicHTML = $myTopicsHTML; 
			$out->postHTML = $myPostsHTML;
			
			return $out;
		}
		else
		{
			$out = new MyTopicAndPostsOutput();
			$out->topicHTML = $tv->RenderMessage(\View\TopicView::WAS_LOGGED_OUT);
			
			return $out;			
		}
	}
}

?>